Software virtualization allows for testing and installing software applications, operating system (OS) updates or the like that require overwriting system registries and system-specific common files during installation without changing the configuration of the test machine. Software virtualization mucks up the registry, dynamic linking libraries (DLLs) and other system files required for an installation (or an update) of software by creating them in a virtual cache without disturbing the test machine's current configuration. This feature of virtual installation is very useful during software development, testing and quality assurance where the deployment of new software requires testing on multiple platforms and configurations. Usually every possible combination of platforms and configurations for testing is impossible to perform.
After various versions of software, applications and operating systems are virtually installed, system files are stored or readily available from a virtual cache, the operator can easily turn on and off, or changes versions from one to another without rebooting the test machine.
VMWARE® virtualization software of VMWARE Inc., Palo Alto, Calif., offers virtualization of various operating systems, configurations or versions of one or more operating systems on a single personal computer. However, virtualization by VMWARE virtualization software are is distinguishable from software virtualization because it is, in essence, a hardware virtualization; VMWARE virtualization software transforms the hardware resources, such as CPU, memory, hard disk, network controller, peripheral devices, etc., to create a fully functional virtual machine that can run its own operating system and applications as if it operates on another PC. Presently, VMWARE virtualization software virtualizes x86 processors only.
Prior software virtualizations require that virtualized machine images be maintained in the limited read-only memory (ROM) of the test machine to retain them after the machine is turned off. Furthermore, in order to test a software application on multiple machines, each machine needs to be tested separately in a serial fashion, which requires interruption and time of the operator who carries out the testing. Moreover, current techniques for software virtualization have risks for corruption of files resident on the machine on which the software virtualization takes place.